﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TM.Data;
using TM.Data.Contracts;
using TM.Data.ViewModels.VmMapper;

namespace TM.Plugable
{
    public delegate void ProjectDataIsChangedHandler(object sender, bool isDirty);

    public interface IProjectEditor
    {
        event ProjectDataIsChangedHandler ProjectDataIsChanged;

        IVmMapper VmMapper { get; }
        IUnitOfWork UoW { get; }
        bool IsDataLoaded { get; }
        bool IsDirty { get;}
        object Session { get; }
        Guid ProjectId { get; }    

        void SetIoC(IIoCParams ioCParams, IVmMapper vmMapper);

        void LoadProjectInformation(Guid projectId);
        void RemoveCurrentTask();
        void CreateNewTask();
        void Save();
        void Release();
    }
}
